www.gusucode.com > WSTMall PHP网店系统 v1.6.0PHP源码程序 > WSTMall PHP网店系统 v1.6.0/wstmall_v1.6.0_160506/wstmall_v1.6.0_160506/Apps/Admin/Model/OrderComplainsModel.class.php

    <?php
 namespace Admin\Model;
/**
 * ============================================================================
 * WSTMall开源商城
 * 官网地址:http://www.wstmall.com 
 * 联系QQ:707563272
 * ============================================================================
 * 订单投诉服务类
 */
class OrderComplainsModel extends BaseModel {
	/**
	 * 获取订单详细信息
	 */
	 public function getDetail(){
	 	$id = (int)I('id');
	 	$sql = "select oc.*,u.userName,u.loginName from __PREFIX__order_complains oc,__PREFIX__users u where oc.complainTargetId=u.userId and oc.complainId=".$id;
	 	$data = $this->queryRow($sql);
	 	if($data){
	 		if($data['complainAnnex']!='')$data['complainAnnex'] = explode(',',$data['complainAnnex']);
	 		if($data['respondAnnex']!='')$data['respondAnnex'] = explode(',',$data['respondAnnex']);
			$sql = "select o.*,s.shopName from __PREFIX__orders o
		 	         left join __PREFIX__shops s on o.shopId=s.shopId 
		 	         where o.orderFlag=1 and o.orderId=".$data['orderId'];
			$rs = $this->queryRow($sql);
			//获取用户详细地址
			$sql = 'select communityName,a1.areaName areaName1,a2.areaName areaName2,a3.areaName areaName3 from __PREFIX__communitys c 
			        left join __PREFIX__areas a1 on a1.areaId=c.areaId1 
			        left join __PREFIX__areas a2 on a2.areaId=c.areaId2
			        left join __PREFIX__areas a3 on a3.areaId=c.areaId3
			        where c.communityId='.$rs['communityId'];
			$cRs = $this->queryRow($sql);
			$rs['userAddress'] = $cRs['areaName1'].$cRs['areaName2'].$cRs['areaName3'].$cRs['communityName'].$rs['userAddress'];
			//获取日志信息
			$m = M('log_orders');
			$sql = "select lo.*,u.loginName,u.userType,s.shopName from __PREFIX__log_orders lo
			         left join __PREFIX__users u on lo.logUserId = u.userId
			         left join __PREFIX__shops s on u.userType!=0 and s.userId=u.userId
			         where orderId=".$data['orderId'];
			$rs['log'] = $this->query($sql);
			//获取相关商品
			$sql = "select og.*,g.goodsThums,g.goodsName,g.goodsId from __PREFIX__order_goods og
				        left join __PREFIX__goods g on og.goodsId=g.goodsId
				        where og.orderId = ".$data['orderId'];
			$rs['goodslist'] = $this->query($sql);
			$data['order'] = $rs;
	 	}
		return $data;
	 }
	 
	 /**
	  * 获取订单投诉列表
	  */
    public function queryByPage(){
        $shopName = WSTAddslashes(I('shopName'));
     	$orderNo = WSTAddslashes(I('orderNo'));
     	$complainStatus = (int)I('complainStatus',-1);
     	$areaId1 = (int)I('areaId1',0);
     	$areaId2 = (int)I('areaId2',0);
     	$areaId3 = (int)I('areaId3',0);
	 	$sql = "select oc.complainId,o.orderId,o.orderNo,s.shopName,u.userName,u.loginName,oc.complainTime,oc.complainStatus,oc.complainType
	 	         from __PREFIX__orders o left join __PREFIX__shops s on o.shopId=s.shopId,__PREFIX__users u
	 	         ,__PREFIX__order_complains oc where o.userId=u.userId and oc.orderId=o.orderId and o.orderFlag=1 and o.orderStatus in (-5,-4,-3,4) ";
	 	if($areaId1>0)$sql.=" and s.areaId1=".$areaId1;
	 	if($areaId2>0)$sql.=" and s.areaId2=".$areaId2;
	 	if($areaId3>0)$sql.=" and s.areaId3=".$areaId3;
	 	if($complainStatus>-1)$sql.=" and oc.complainStatus=".$complainStatus;
	 	if($orderNo!='')$sql.=" and o.orderNo like '%".$orderNo."%' ";
	 	$sql.=" order by complainId desc";  
		$page = $this->pageQuery($sql);
		return $page;
	 }
	 /**
	  * 仲裁
	  */
	 public function finalHandle(){
	 	$rd = array('status'=>-1,'msg'=>'无效的投诉信息');
	 	$id = (int)I('id');
	 	if($id==0)return $rd;
	 	//判断是否已经处理过了
	 	$sql = "select oc.complainStatus,p.userId shopUserId,o.shopId,o.userId,o.orderNo,o.orderId,o.orderStatus,o.useScore,o.scoreMoney,o.orderScore,oc.needRespond ,o.poundageMoney,o.poundageRate
	 	        from __PREFIX__order_complains oc,__PREFIX__orders o left join __PREFIX__shops p on o.shopId=p.shopId
	 	        where oc.orderId=o.orderId and complainId=".$id;
	 	$rs = $this->queryRow($sql);
	 	if($rs['complainStatus']!=4){
	 		$data = array();
	 		$data['finalHandleStaffId'] = session('WST_STAFF.staffId');
	 		$data['complainStatus'] = 4;
	 		$data['finalResult'] = I('finalResult');
	 		$data['finalResultTime'] = date('Y-m-d H:i:s');
	 	    $ers = $this->where('complainId='.$id)->save($data);
	 	    if($ers!==false){
	 	    	$rd['status'] = 1;
	 	    	$rd['msg'] = '操作成功!';
	 	    	if($rs['needRespond']==1){
			 	    //发站内商家信息提醒
			 	    $messsage = array(
							'msgType' => 0,
							'sendUserId' => session('WST_STAFF.staffId'),
							'receiveUserId' => $rs['shopUserId'],
							'msgContent' => "您的被投诉订单【".$rs['orderNo']."】已仲裁,请查看订单投诉详情。",
							'createTime' => date('Y-m-d H:i:s'),
							'msgStatus' => 0,
							'msgFlag' => 1,
					);
					M('messages')->add($messsage);
	 	    	}
				//发站内用户信息提醒
		 	    $messsage = array(
						'msgType' => 0,
						'sendUserId' => session('WST_STAFF.staffId'),
						'receiveUserId' => $rs['userId'],
						'msgContent' => "您的订单投诉【".$rs['orderNo']."】已仲裁,请查看订单投诉详情。",
						'createTime' => date('Y-m-d H:i:s'),
						'msgStatus' => 0,
						'msgFlag' => 1,
				);
				M('messages')->add($messsage);
				if($rs['orderStatus']==-5){
					$orderId = $rs['orderId'];
					$userId = $rs['userId'];
					$orderStatus = (int)I("orderStatus",0);
					if($orderStatus==-4 && $rs["useScore"]>0){//同意用户拒收
						$sql = "UPDATE __PREFIX__users set userScore=userScore+".$rs["useScore"]." WHERE userId=".$rs['userId'];
						$this->execute($sql);
						
						$data = array();
						$m = M('user_score');
						$data["userId"] = $userId;
						$data["score"] = $rs["useScore"];
						$data["dataSrc"] = 4;
						$data["dataId"] = $orderId;
						$data["dataRemarks"] = "订单拒收返还积分";
						$data["scoreType"] = 1;
						$data["createTime"] = date('Y-m-d H:i:s');
						$m->add($data);
					}else{

						//修改商品销量
						$sql = "UPDATE __PREFIX__goods g, __PREFIX__order_goods og, __PREFIX__orders o SET g.saleCount=g.saleCount+og.goodsNums WHERE g.goodsId= og.goodsId AND og.orderId = o.orderId AND o.orderId=$orderId AND o.userId=".$userId;
						$this->execute($sql);
						 
						//修改积分
						if($GLOBALS['CONFIG']['isOrderScore']==1){
							$sql = "UPDATE __PREFIX__users set userScore=userScore+".$rs["orderScore"].",userTotalScore=userTotalScore+".$rs["orderScore"]." WHERE userId=".$userId;
							$this->execute($sql);
						
							$data = array();
							$m = M('user_score');
							$data["userId"] = $userId;
							$data["score"] = $rs["orderScore"];
							$data["dataSrc"] = 1;
							$data["dataId"] = $orderId;
							$data["dataRemarks"] = "交易获得";
							$data["scoreType"] = 1;
							$data["createTime"] = date('Y-m-d H:i:s');
							$m->add($data);
						}
						//积分支付支出
						if($rs["scoreMoney"]>0){
							$data = array();
							$m = M('log_sys_moneys');
							$data["targetType"] = 0;
							$data["targetId"] = $userId;
							$data["dataSrc"] = 2;
							$data["dataId"] = $orderId;
							$data["moneyRemark"] = "订单【".$rs["orderNo"]."】支付 ".$rs["useScore"]." 个积分,支出 ¥".$rs["scoreMoney"];
							$data["moneyType"] = 2;
							$data["money"] = $rs["scoreMoney"];
							$data["createTime"] = date('Y-m-d H:i:s');
							$data["dataFlag"] = 1;
							$m->add($data);
						}
						//收取订单佣金
						if($rs["poundageMoney"]>0){
							$data = array();
							$m = M('log_sys_moneys');
							$data["targetType"] = 1;
							$data["targetId"] = $rs["shopId"];
							$data["dataSrc"] = 1;
							$data["dataId"] = $orderId;
							$data["moneyRemark"] = "收取订单【".$rs["orderNo"]."】".$rs["poundageRate"]."%的佣金 ¥".$rs["poundageMoney"];
							$data["moneyType"] = 1;
							$data["money"] = $rs["poundageMoney"];
							$data["createTime"] = date('Y-m-d H:i:s');
							$data["dataFlag"] = 1;
							$m->add($data);
						}
					}
					
					$data = array();
					$data["orderId"] = $orderId;
					$data["logContent"] = ($orderStatus==-4)?"订单仲裁结果,同意用户拒收":"订单仲裁结果,不同意用户拒收";
					$data["logUserId"] = $rs['userId'];
					$data["logType"] = 0;
					$data["logTime"] = date('Y-m-d H:i:s');
					$mlogo = M('log_orders');
					$mlogo->add($data);
					//根据仲裁结果,修改订单状态
					$sql = "update __PREFIX__orders set orderStatus = $orderStatus where orderId= $orderId";
					$this->execute($sql);
				}
	 	    }
	 	}else{
	 	    $rd['msg'] = '操作失败,该投诉状态已发生改变,请刷新后重试!';
	 	}
	 	return $rd;
	 }
	 
	 /**
	  * 转交给应诉人应诉
	  */
	 public function deliverRespond(){
	 	$rd = array('status'=>-1,'msg'=>'无效的投诉信息');
	 	$id = (int)I('id');
	 	if($id==0)return $rd;
	 	//判断是否已经处理过了
	 	$sql = "select oc.complainStatus,oc.respondTargetId,o.orderNo ,p.userId
	 	        from __PREFIX__order_complains oc,__PREFIX__orders o left join __PREFIX__shops p on o.shopId = p.shopId
	 	        where oc.orderId=o.orderId and complainId=".$id;
	 	$rs = $this->queryRow($sql);
	 	if($rs['complainStatus']==0){
	 		$data = array();
	 		$data['needRespond'] = 1;
	 		$data['complainStatus'] = 1;
	 		$data['deliverRespondTime'] = date('Y-m-d H:i:s');
	 	    $ers = $this->where('complainId='.$id)->save($data);
	 	    if($ers!==false){
	 	    	$rd['status'] = 1;
	 	    	$rd['msg'] = '操作成功!';
		 	    //发站内信息提醒
		 	    $messsage = array(
						'msgType' => 0,
						'sendUserId' => session('WST_STAFF.staffId'),
						'receiveUserId' => $rs['userId'],
						'msgContent' => "您有新的被投诉订单【".$rs['orderNo']."】,请及时回应以免影响您的店铺评分。",
						'createTime' => date('Y-m-d H:i:s'),
						'msgStatus' => 0,
						'msgFlag' => 1,
				);
				M('messages')->add($messsage);
	 	    }
	 	}else{
	 	    $rd['msg'] = '操作失败,该投诉状态已发生改变,请刷新后重试!';
	 	}
	 	return $rd;
	 }
};
?>